// function ajax ({ url, data = {}, method = "get", timeout = 1000, beforeSend }) {
//   beforeSend && beforeSend();

//   let str = "";
//   for (let i in data) {
//     str += `${i}=${data[i]}&`
//   }
//   if (method === "get") {
//     url += "" + str.slice(0, -1);
//   }

//   const xhr = new XMLHttpRequest();
//   xhr.open(method, url, true);
//   xhr.timeout = timeout;

//   if (method === "get") {
//     xhr.send();
//   } else if (method === "post") {
//     // xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//     xhr.send(str.slice(0, -1));
//   }

//   return new Promise((resolve, reject) => {
//     xhr.onload = function () {
//       if (xhr.status === 200) {
//         resolve(xhr.responseText);
//       } else {
//         reject(xhr.status);
//       }
//     }
//     xhr.ontimeout = function () {
//       reject("timeout");
//     }
//   })
// }
function ajax({ url, data = {}, method = "get", timeout = 1000, beforeSend, downloadFileName }) {
  beforeSend && beforeSend();

  let str = "";
  for (let i in data) {
      str += `${i}=${data[i]}&`
  }
  if (method === "get") {
      url += "" + str.slice(0, -1);
  }

  const xhr = new XMLHttpRequest();
  xhr.open(method, url, true);
  xhr.timeout = timeout;

  if (method === "get") {
      xhr.send();
  } else if (method === "post") {
      xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xhr.send(str.slice(0, -1));
  }

  return new Promise((resolve, reject) => {
      xhr.onload = function () {
          if (xhr.status === 200) {
              // 判断是否需要下载文件
              if (downloadFileName) {
                  // 创建 Blob 对象
                  const blob = new Blob([xhr.response], { type: xhr.getResponseHeader("Content-Type") });

                  // 创建隐藏的链接并设置下载属性
                  const link = document.createElement('a');
                  link.href = window.URL.createObjectURL(blob);
                  link.download = downloadFileName;

                  // 模拟点击链接实现文件下载
                  document.body.appendChild(link);
                  link.click();

                  // 清理资源
                  setTimeout(() => {
                      window.URL.revokeObjectURL(link.href);
                      document.body.removeChild(link);
                  }, 0);
              }

              resolve(xhr.responseText);
          } else {
              reject(xhr.status);
          }
      }
      xhr.ontimeout = function () {
          reject("timeout");
      }
  })
}
